/**
 * @author caesar
 * @date 2025/6/30
 * @apiNote
 */
/*
打印一个菱形，中间对称

public class practice5_3 {
    public static void main(String[] args) {
        //上半部分
        for(int n=1;n<=5;n++){
            for(int i = 1;i<=5-n;i++){
                System.out.print(" ");
            }
            for(int j = 1;j<=2*n-1;j++){
                System.out.print("*");
            }
            System.out.println();
        }
        //下半部分
        for(int n=4;n>=1;n--){
            for(int i = 1;i<=5-n;i++){
                System.out.print(" ");
            }
            for(int j = 1;j<=2*n-1;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
*/
//思路二，不分成两部分，只使用一个部分
    /*
    具体描述，要完成一个9行的菱形，我们可以将他看成一个9*9的矩阵，
    我们发现，对于中心点来说，整个矩阵里面在菱形范围的点到达中心点的距离是相同的
    所以，我们只要找到中心点，然后从中心点开始，向两边扩展，扩展的次数为9/2-1
    只要在这个距离内到达中心点，那么就属于菱形，也就是标记*
    到达中心点的距离大于该距离的话，就不属于菱形，属于空白，输出空格
    Math.abs()，对括号内的值取绝对值
    * */
public class practice5_3 {
    public static void main(String[] args) {
        int line = 9;
        int center = line/2;
        for(int i=0; i<line; i++){
            for(int j=0; j<line; j++){
                //从中心点到边长的总步数在center步之内（只能上下、左右移动）
                if(Math.abs(i-center) + Math.abs(j-center) <= center){
                    System.out.print("* ");
                }else{
                    System.out.print("  ");
                }
            }
            System.out.println();
        }
    }
}